--     function afficher (un_mur: mur) return string is
--        function afficherC(un_com : access commentaire) return string is
--        begin
--           if(un_com = NULL) then
--              return "";
--           else
--              return toString(un_com.all.I.all) & " : " & toString(un_com.all.M.all) & "\n" & afficherC(un_com.all.nextCom);
--           end if;
--        end afficherC;
--
--        function afficherP(un_post : access Post) return string is
--        begin
--           if(un_post = NULL) then
--              return "";
--           else
--              return toString(un_post.all.I.all) & " : " & toString(un_post.all.M.all)
--                & "\n" & afficherC(un_post.all.nextCom) & "\n" & afficherP(un_post.all.nextPost);
--           end if;
--        end afficherP;
--     begin
--        return afficherP(un_mur.all.nextPost);
--  end afficher;
--
--
--     --with function toString(x:cercle) return String ;
--     --with function toString(x:individu) return String ;
--     --with function toString(x:message) return String ;

function tmp return string is
begin
   return "tamere";
end tmp;





      l_individu : access un_individu := getUnIndividuParmisListeUnIndividu(C0.acces_etat.all,I1);
      indice_indiv : natural := getIndiceParmisListeUnIndividu(C0.acces_etat.all, I1);
      les_cercles : access liste_cercle := l_individu.all.ses_cercles;
      le_cercle : access un_cercle := getCercleParmisListeUnCercle(les_cercles, C1);
      indice_le_cercle : natural := getIndiceParmisListeUnCercle(les_cercles, C1);
      list_indiv_cercle : access liste_membre := le_cercle.ses_membres ;
      l_individu_tableau : access liste_membre := new liste_membre'(1=> new individu'(I2)) ;
      l_indiv_modifie : access un_individu := l_individu;
   begin
       if C0.acces_etat.all'Length = 0 then
         list_indiv_cercle := new liste_membre'(1=> new individu'(I2)) ;
      else
         DECLARE
            indice : natural := getIndiceParmisListeMembre(list_indiv_cercle,I2);
         BEGIN
            if indice = 0 then
               list_indiv_cercle := new liste_membre'(l_individu_tableau.all
                                                      & list_indiv_cercle.all(indice+1 .. list_indiv_cercle.all'Last));
               if indice_le_cercle = 0 then
                  les_cercles := new liste_cercle'(new un_cercle'(son_nom=>le_cercle.all.son_nom,
                                                                  ses_membres=> new liste_membre'(list_indiv_cercle.all))
                    & les_cercles.all(2..les_cercles.all'Last));
                  if indice_indiv = 0 then
                     return (nb_post => C0.nb_post,
                             acces_etat => new etat'(new etat'(
                               new un_individu'(son_nom     => l_individu.all.son_nom,
                                                son_mur     => l_individu.all.son_mur,
 						ses_bloques => l_individu.all.ses_bloques,
                                                ses_cercles => new liste_cercle'(new liste_cercle(
                                                  new un_cercle'(son_nom => le_cercle.son_nom,
                                                                 ses_membres =>
                                                                 new liste_membre'(l_individu_tableau.all & le_cercle.all.ses_membres.all(2..le_cercle.ses_membres.all'Last))
                                                                 )
                                                 )
                                                  & l_individu.all.ses_cercles.all(2..l_individu.all.ses_cercles.all'Last)))
                               & c0.acces_etat.all(2..c0.acces_etat.all'Last))));

                  else
                     return (nb_post => C0.nb_post,
                             acces_etat => new etat'(
               else


                  return null;
               end if;



               end if;
               return C0;

            end;
      end if;
      return (nb_post=>C0.nb_post,
              acces_etat =>  new etat'(c0.acces_etat.all(c0.acces_etat.all'First .. indice_indiv -1)
                & l_individu_tableau.all
                & c0.acces_etat.all( indice_indiv+1 .. c0.acces_etat.all'Last)));






























                                l_individu : access un_individu := getUnIndividuParmisListeUnIndividu(C0.acces_etat.all,I1);
      indice_indiv : natural := getIndiceParmisListeUnIndividu(C0.acces_etat.all, I1);
      les_cercles : access liste_cercle := l_individu.all.ses_cercles;
      le_cercle : access un_cercle := getCercleParmisListeUnCercle(les_cercles, C1);
      indice_le_cercle : natural := getIndiceParmisListeUnCercle(les_cercles, C1);
      list_indiv_cercle : access liste_membre := le_cercle.ses_membres ;
      l_individu_tableau : access liste_membre := new liste_membre'(1=> new individu'(I2)) ;
      l_indiv_modifie : access un_individu := l_individu;
   begin
       if C0.acces_etat.all'Length = 0 then
         list_indiv_cercle := new liste_membre'(1=> new individu'(I2)) ;
      else
         DECLARE
            indice : natural := getIndiceParmisListeMembre(list_indiv_cercle,I2);
         BEGIN
            if indice = 0 then
               list_indiv_cercle := new liste_membre'(l_individu_tableau.all
                                                      & list_indiv_cercle.all(indice+1 .. list_indiv_cercle.all'Last));
               if indice_le_cercle = 0 then
                  les_cercles := new liste_cercle'(new un_cercle'(son_nom=>le_cercle.all.son_nom,
                                                                  ses_membres=> new liste_membre'(list_indiv_cercle.all))
                    & les_cercles.all(2..les_cercles.all'Last));
                  if indice_indiv = 0 then
                     return (nb_post => C0.nb_post,
                             acces_etat => new etat'(new etat'(
                               new un_individu'(son_nom     => l_individu.all.son_nom,
                                                son_mur     => l_individu.all.son_mur,
 						ses_bloques => l_individu.all.ses_bloques,
                                                ses_cercles => new liste_cercle'(new liste_cercle(
                                                  new un_cercle'(son_nom => le_cercle.son_nom,
                                                                 ses_membres =>
                                                                 new liste_membre'(l_individu_tableau.all & le_cercle.all.ses_membres.all(2..le_cercle.ses_membres.all'Last))
                                                                 )
                                                 )
                                                  & l_individu.all.ses_cercles.all(2..l_individu.all.ses_cercles.all'Last)))
                               & c0.acces_etat.all(2..c0.acces_etat.all'Last))));

                  else
                     return (nb_post => C0.nb_post,
                             acces_etat => new etat'(

                               new etat'(new un_individu'(son_nom     => l_individu.all.son_nom,
                                                                                son_mur     => l_individu.all.son_mur,
                                                                                ses_cercles => new liste_cercle'(new liste_cercle(
                                                                                  new un_cercle'(son_nom => le_cercle.son_nom,
                                                                                                 ses_membres => new liste_membre'(new liste_membre'(new individu'(I2))
                                                                                                   & le_cercle.ses_membres.all(2..le_cercle.ses_membres.all'Last)),
                                                                                                 ses_bloques => l_individu.all.ses_bloques))
                                                                                  & l_individu.all.ses_cercles(2..l_individu.all.ses_cercles'Last)))
                               & c0.acces_etat.all(2..c0.acces_etat.all'Last))));
                  end if ;
               else


                  return null;
               end if;



               end if;
               return C0;

            end;
      end if;
      return (nb_post=>C0.nb_post,
              acces_etat =>  new etat'(c0.acces_etat.all(c0.acces_etat.all'First .. indice_indiv -1)
                & l_individu_tableau.all
                  & c0.acces_etat.all( indice_indiv+1 .. c0.acces_etat.all'Last)));
